#ifndef __TASK_LED_CTRL_H__
#define __TASK_LED_CTRL_H__

#include <stdint.h>
// app
#include "led_zhuoyue.h"

typedef char     *(*fn_pc_v)(void);
typedef uint32_t  (*fn_u32_v)(void);
typedef uint32_t  (*fn_u32_u32)(uint32_t);
typedef void      (*fn_v_pc)(char*);
typedef uint8_t   (*fn_u8_v)(void);
typedef char     *(*fn_pc_u32)(uint32_t);
typedef char     *(*fn_pc_u32u32)(uint32_t, uint32_t);

enum {
    LCF_init_interface                      = 0,
    LCF_get_cfg,
    LCF_show_data,
    LCF_err_print,
    LCF_max,
};
typedef uint8_t led_ctrl_flag_t;

void led_scr_set_base_parm(uint16_t hwHor, uint16_t hwVer, uint8_t byFontSize, uint8_t byPixelPitch);
void led_scr_set_time_fn(fn_v_pc fnGetDate, fn_v_pc fnGetTime, fn_u8_v fnGetWeekday);
void led_scr_set_ope_fn1(fn_pc_v fnGetDevIdStr, fn_pc_v fnGetDevNameStr);
void led_scr_set_ope_fn2(fn_u32_v fnGetNodeSum, fn_u32_u32 fnGetMntrSum);
void led_scr_set_ope_fn3(fn_pc_u32 fnGetNodeName, fn_pc_u32u32 fnGetMntrName, fn_pc_u32u32 fnGetMntrValue, fn_pc_u32u32 fnGetMntrUnit);

void led_scr_set_per_page_time(uint32_t uPerPageTime);
void led_scr_switch_ctrl_flag(uint8_t byCtrlFlag);

void task_led_control_state_machine(void);

#endif  // __TASK_LED_CTRL_H__
